iT邦幫忙

2025 iThome 鐵人賽

DAY 11
1
DevOps

DevOps 進化論:從全能型戰士到安全守門員系列 第 11

Day 11:Kubernetes 入門(部署應用程式到 Minikube)

  • 分享至 

  • xImage
  •  

● 前言

在 Day 10,我們完成了 Docker 打包,但光有 Image 還不夠,我們需要有一個地方來「調度與運行」它,並且保證服務穩定,這就是 Kubernetes 的角色。
今天要帶大家用 Minikube,在本機快速建立一個 Cluster,並部署第一個 Pod。

● Minikube 是什麼?

Minikube 是 Google 推出的輕量級工具,可以在本機模擬一個單節點的 Kubernetes Cluster。
它最大的好處是:快速、方便,適合學習與實驗,不用真的準備雲端環境。

● 環境準備

在開始之前,請確認已經具備以下條件:

1.WSL 2(Windows 環境需要,Linux 可省略)

https://ithelp.ithome.com.tw/upload/images/20250824/20178156zdwMW2dIVL.png

2.Docker Desktop(作為 Minikube 的 Driver)

https://ithelp.ithome.com.tw/upload/images/20250824/20178156dwZrYnbOrI.png

3.Minikube 安裝完成,並設定到環境變數

https://ithelp.ithome.com.tw/upload/images/20250824/20178156FlUmjPbzMl.png
https://ithelp.ithome.com.tw/upload/images/20250824/20178156AwhgAztubi.png

⚠️ 注意事項:

▪ 如果有舊的 cluster,可以先刪除:minikube delete
▪ 在啟動 Minikube 前,務必先開 Docker Desktop,否則會啟動不了
▪ 建議使用 --driver=docker,這樣比較穩定

● 實作步驟

1.啟動 Minikube 並切至 Minikube 的 Docker 環境

https://ithelp.ithome.com.tw/upload/images/20250824/20178156xT9EQpThwu.png

指令 : minikube start --driver=docker

👉執行成功後,Minikube 就會幫你建立一個單節點的 Kubernetes Cluster。

https://ithelp.ithome.com.tw/upload/images/20250824/201781561VihpZ8VW9.png

指令 : eval $(minikube docker-env)

👉切換 Docker CLI context 到 Minikube 內建的 Docker(確保 build 出來的 image 是放進 Minikube 內部,而不是你本機 Docker Desktop)

2.建立映像檔 & 撰寫 Deployment YAML

https://ithelp.ithome.com.tw/upload/images/20250824/20178156594Iy5z0iD.png

指令 : docker build -t fastapi-app:latest .

👉用 Docker 建立映像檔

撰寫 deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fastapi-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fastapi
  template:
    metadata:
      labels:
        app: fastapi
    spec:
      containers:
      - name: fastapi-app
        image: fastapi-app:latest
        imagePullPolicy: Never
        ports:
        - containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
  name: fastapi-service
spec:
  type: NodePort   # 在 Minikube 環境方便用 URL 存取
  selector:
    app: fastapi
  ports:
  - port: 8000        # Service 對外的 port
    targetPort: 8000  # Pod containerPort
    nodePort: 30081   # 對外固定 NodePort (範圍 30000–32767)

內容包含:

🔸Deployment:負責讓 Pod 跑起來並維持數量
🔸Service:提供固定門牌號碼,讓外界能找到 Pod

3.部署應用程式到 Minikube 並驗證

https://ithelp.ithome.com.tw/upload/images/20250824/201781568HFEZT864A.png

指令 : minikube kubectl -- apply -f deployment.yml

👉套用 YAML

https://ithelp.ithome.com.tw/upload/images/20250824/20178156Jtgo63MdhF.png

指令 : minikube kubectl -- get pods

👉查看 Pod 狀態
✅若看到 Pod 進入 Running 狀態,就代表成功

https://ithelp.ithome.com.tw/upload/images/20250824/20178156tlfqrifmXH.png

指令 : minikube kubectl -- get svc

👉確認 Service 已建立

https://ithelp.ithome.com.tw/upload/images/20250824/20178156ijfgMwcQEO.png

指令 : minikube service fastapi-service --url

👉Minikube 幫你「本地開一個通道」,保證一定能連到 Service(終端機要保持開啟,否則通道會關閉)

URL : http://127.0.0.1:41729/

https://ithelp.ithome.com.tw/upload/images/20250824/20178156x9Kv3272PM.png

● 總結

▪ Minikube:本機快速練習 Kubernetes 的最佳選擇

▪ 今天認識了兩種核心資源類型:

1.Deployment:確保 Pod 的數量與生命週期

2.Service:提供固定入口,讓使用者或其他 Pod 能存取服務

👉 Pod 成功跑起來只是開始,下一篇我們要談雲端部署策略:藍綠、滾動、金絲雀,看看如何在不中斷服務下完成版本更新 🚀


上一篇
Day 10 : 單體架構到微服務架構 ─ 為Kubernetes打下基礎
下一篇
Day 12 : 常見的四種 K8s 部署策略(Rolling / Recreate / Blue-Green / Canary
系列文
DevOps 進化論:從全能型戰士到安全守門員19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言